package com.yb.mini.common.exception;

import com.yb.mini.common.common.Result;
import lombok.Getter;
import lombok.Setter;

/**
 * 自定义异常类,统一捕获处理自定义异常信息
 *
 * @author yangbiao
 * @date 2022/3/30
 */
@Getter
@Setter
public class CustomException extends RuntimeException {
    private int code;

    /**
     * 调用父类构造传递异常信息
     *
     * @param message
     */
    public CustomException(String message) {
        super(message);
        this.code = Result.ResultEnum.CUSTOM_EXCEPTION.getCode();
    }

    /**
     * 调用父类构造传递异常信息
     *
     * @param message
     */
    public CustomException(int code, String message) {
        super(message);
        this.code = code;
    }

    /**
     * 使用静态方法方便抛出异常信息(传入状态码)
     *
     * @param code
     * @param message
     */
    public static void message(int code, String message) {
        throw new CustomException(code, message);
    }

    /**
     * 使用静态方法方便抛出异常信息
     *
     * @param message
     */
    public static void message(String message) {
        message(Result.ResultEnum.CUSTOM_EXCEPTION.getCode(), message);
    }

    /**
     * 使用静态方法方便抛出异常信息(抛给用户)
     *
     * @param message
     */
    public static void messageOpen(String message) {
        message(Result.ResultEnum.CUSTOM_OPEN_EXCEPTION.getCode(), message);
    }

}